package chapter06

object Test13_Trait {
  def main(args: Array[String]): Unit = {

  }
}

class Person13{
  val name:String = "pp"
  val age:Int = 18
  def sayHello():Unit = {
    println(name)
  }
}

// 定义特质
trait Young {
  // 年轻的特质，可以定义抽象属性和非抽象属性
  val age:Int
  val name:String = "young"

  // 声明抽象和非抽象方法

  def play():Unit = {
    println("123")
  }

  def dating():Unit
}

class Student13 extends Person13 with Young{
  // 由于name是冲突了，所以要重写
  override val name: String = "override"
  override val age: Int = 123

  def dating(): Unit = {
    // 由于Person13和Young都有name属性
    // 虽然这里不报错，但是你执行他的方法会报错
    println(s"$name is dating")
  }
}
